package com.example.cloudprinter.api.feie;

import com.example.cloudprinter.entity.feie.AddResponse;
import com.example.cloudprinter.entity.feie.DeleteResponse;
import com.example.cloudprinter.entity.feie.PrintResponse;
import com.example.cloudprinter.entity.feie.StateResponse;

import retrofit2.http.GET;
import retrofit2.http.Query;
import rx.Observable;

/**
 * 飞鹅打印机访问接口
 */
public interface FEIEPrinterApi {

    /**
     * 添加打印机
     *
     * @param user           用户账号（去飞鹅官网注册申请）
     * @param stime          时间戳
     * @param sig            加签数据
     * @param printerContent 打印内容
     * @return
     */
    @GET("Api/Open/")
    Observable<AddResponse> addPrinter(@Query("user") String user,
                                       @Query("stime") String stime,
                                       @Query("sig") String sig,
                                       @Query("printerContent") String printerContent,
                                       @Query("apiname") String apiname);

    /**
     * 删除打印机
     *
     * @param user
     * @param stime
     * @param sig
     * @param apiname
     * @param snlist
     * @return
     */
    @GET("Api/Open/")
    Observable<DeleteResponse> deletePrinter(@Query("user") String user,
                                             @Query("stime") String stime,
                                             @Query("sig") String sig,
                                             @Query("apiname") String apiname,
                                             @Query("snlist") String snlist);

    /**
     * 获取打印机状态
     *
     * @param user
     * @param stime
     * @param sig
     * @param apiname
     * @param sn
     * @return
     */
    @GET("Api/Open/")
    Observable<StateResponse> getPrinterState(@Query("user") String user,
                                              @Query("stime") String stime,
                                              @Query("sig") String sig,
                                              @Query("apiname") String apiname,
                                              @Query("sn") String sn);

    /**
     * 打印
     *
     * @param user
     * @param stime
     * @param sig
     * @param apiname
     * @param sn
     * @param content
     * @param times
     * @return
     */
    @GET("Api/Open/")
    Observable<PrintResponse> print(@Query("user") String user,
                                    @Query("stime") String stime,
                                    @Query("sig") String sig,
                                    @Query("apiname") String apiname,
                                    @Query("sn") String sn,
                                    @Query("content") String content,
                                    @Query("times") String times);
}


